#include "nr_io.h"
#include "nr_io_mongodb.h"
#include "nr_io_mysql.h"
#include "nr_io_xml.h"

nr_io::nr_io()
{
}

nr_io::~nr_io()
{
}

nr_io* nr_io_factory::create(nr_io_type_t type)
{
    nr_io* io = NULL;

    switch(type)
    {
    case NR_IO_TYPE_MONGODB:
        io = new nr_io_mongodb();
        break;
    case NR_IO_TYPE_MYSQL: 
        io = new nr_io_mysql();
        break;
    case NR_IO_TYPE_XML:
        io = new nr_io_xml();
        break;
    default:
        Q_ASSERT(false);
    }

    return io;
}

void nr_io_factory::destroy(nr_io* io)
{
    delete io;
}

nr_io_factory::nr_io_type_t nr_io_factory::parse_IO_type( const QString &type_str )
{
    const QString str_IO_types[] =  {"unknown",
                                     "mongodb",
                                     "mysql",
                                     "xml"};

    for(int i = 0; i < NR_ARRAY_SIZE(str_IO_types); ++i)
    {
        if (type_str.compare(str_IO_types[i], Qt::CaseInsensitive) == 0)
        {
            return (nr_io_type_t)i;
        }
    }

    qDebug("NR_IO_TYPE is unknow.");
    Q_ASSERT(0);

    return NR_IO_TYPE_UNKNOWN;
}
